/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package model;

import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.Transaction;
import util.HibernateUtil;

/**
 *
 * @author root
 */
public class UsuarioManager 
{    
    
    public UsuarioManager()
    {}
    
    public Usuario getUsuario(String login) //retorna o usuario com esse login
    {
        Session hSession;
        Usuario usuario;
        
        hSession = HibernateUtil.getSessionFactory().getCurrentSession();
        Transaction tx = hSession.beginTransaction();
        
        usuario = (Usuario) hSession.createQuery("from Usuario as x where x.login=:login").setParameter("login", login).uniqueResult();
        
        hSession.getTransaction().commit();
        if(!tx.wasCommitted())
            tx.commit();
        return usuario;
    }
    
    public boolean insertUsuario(Usuario usuario) //instancia objeto usuario
    {
        Session hSession;        
        hSession = HibernateUtil.getSessionFactory().getCurrentSession();
        Transaction tx = hSession.beginTransaction();
        
        Usuario user = new Usuario();
        user.setCidade(usuario.getCidade());
        user.setEstado(usuario.getEstado());
        user.setLogin(usuario.getLogin());
        user.setNome(usuario.getNome());
        user.setSenha(usuario.getSenha());
        user.setTelefone(usuario.getTelefone());
        user.setTipo(usuario.getTipo());
        hSession.save(user);
        
        hSession.getTransaction().commit();
        if(!tx.wasCommitted())
            tx.commit();
        return true;
    }
    
    public boolean updateUsuario(String login, Usuario usuario) //login do usuario, dados novos do usuario
    {
        Session hSession;        
        hSession = HibernateUtil.getSessionFactory().getCurrentSession();
        Transaction tx = hSession.beginTransaction();
        
        Usuario user =(Usuario) hSession.load(Usuario.class, login);
        user.setCidade(usuario.getCidade());
        user.setEstado(usuario.getEstado());
        user.setLogin(login);
        user.setNome(usuario.getNome());
        user.setSenha(usuario.getSenha());
        user.setTelefone(usuario.getTelefone());        
        
        hSession.getTransaction().commit();
        if(!tx.wasCommitted())
        {
            tx.commit();
        }
        return true;
    }
    
    public boolean deleteUsuario(String login)
    {
        Session hSession;        
        hSession = HibernateUtil.getSessionFactory().getCurrentSession();
        Transaction tx = hSession.beginTransaction();
        
        Query q = hSession.createQuery("delete from Usuario as x where x.login=:id").setParameter("id", login);
        q.executeUpdate();
        
        hSession.getTransaction().commit();
        if(!tx.wasCommitted())
        {
            tx.commit();
        }
        return true;
    }
    
}
